【机器学习】K-means聚类算法初探

算法代码 Github传送门:K-MeansCluster@skyline0623


数据聚类是对于静态数据分析的一门技术,在许多领域内都被广泛地应用,包括机器学习数据挖掘模式识别图像分析、信息检索以及生物信息等。聚类是把相似的对象通过静态分类的方法分成不同的组别或者更多的子集,这样让在同一个子集中的成员对象都有相似的一些属性,常见的包括在坐标系中更加短的空间距离等。

我们拿2维特征的实例作为例子。我们以这个2维特征向量作为坐标,在一个2维空间中用点标注出这些实例,如图1所示,这里是随机生成的100个实例。图1中带颜色的方框同样是实例,在之后介绍的K-means算法中,这些方框是初始被随机选择出来的聚类中心点。

 


1  在二维空间中100个具有两个特征的实例

我们希望聚类算法能够将特征相近的实例聚集成一个集合,最后形成多个由特征相近的实例聚集成的聚类。如图2所示,我们将上面的数据通过聚类算法聚集成了10个类,分别用10种颜色表示,其中点的颜色标示它属于哪一个聚类。这里使用了点间的欧式距离作为评价两个点特征相似程度的度量。

 

聚成10个类的效果

通常,我们将聚类分析作为一种无监督机器学习算法来看待。与有监督学习不同,如常见的分类问题,我们有标注好分类类别的训练数据,通过这些数据训练出一个模型来对新的数据的分类进行预测。在聚类分析中,我们的数据是没有标注类别的,我们通过数据中实例的特征值相似程度将相似的实例划分到一类中。

在接下来的内容中,我们将介绍一种简单的聚类算法----K-means,第二部分它的原理、过程以及可能存在的问题和解决方案。第三部分介绍K-means算法的具体实现中的流程与细节,以及实验结果的分析。

1  K-Means算法介绍

1.1  算法初探

K-means是一种基于距离的迭代式算法[1]。它将n个观察实例分类到k个聚类中,以使得每个观察实例距离它所在的聚类的中心点比其他的聚类中心点的距离更小。

其中,距离的计算方式可以是欧式距离(2-norm distance),或者是曼哈顿距离(Manhattan distance,1-norm distance)或者其他。这里我们使用欧式距离。

要将每个观测实例都归类到距离它最近的聚类中心点,我们需要找到这些聚类中心点的具体位置。然而,要确定聚类中心点的位置,我们必须知道该聚类中包含了哪些观测实例。这似乎是一个“先有蛋还是先有鸡”的问题。从理论上来说,这是一个NP-Hard问题[3]。

但是,我们可以通过启发式的算法来近似地解决问题。找到一个全局最优的方案是NP-hard问题,但是,降低问题的难度,如果能够找到多个局部最优方案,然后通过一种评价其聚类结果优劣的方式,把其中最优的解决方案作为结果,我们就可以得到一个不错的聚类结果[2]。

这就是为什么我们说K-means算法是一个迭代式的算法。算法[2]的过程如下:

1)所有的观测实例中随机抽取出k个观测点,作为聚类中心点,然后遍历其余的观测点找到距离各自最近的聚类中心点,将其加入到该聚类中。这样,我们就有了一个初始的聚类结果,这是一次迭代的过程。

2&#

  • 21
    点赞
  • 93
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值